Préparation

L’objectif est de commander l’angle de rotation d’un servomoteur par le biais d’une interface homme-machine (IHM) comportant un curseur de réglage et un bouton poussoir d’envoi de la valeur réglée.

On utilise la bibliothèque « Serial » pour communiquer avec la carte Arduino, par l'intermédiaire des méthodes suivantes :

  • ser = serial.Serial("COMx",115200,timeout=1) permet d'initialiser la liaison série à 115200 bauds sur le COMx (x : numéro du port de communication utilisé par la carte Arduino).
  • ser.write("message".encode('utf-8')) permet d'écrire le texte "message".

Le programme suivant permet de réaliser la commande du servomoteur de la base du robot par une IHM Tkinter :

from tkinter import Tk, Button, Label, Scale
import serial
# Ouverture de la liaison série
try:
    ser = serial.Serial("COM8", 115200, timeout=1) # A modifier !
    print(ser)
    liaison=True
except:
    print("Pas de liaison avec la carte Arduino !")
    liaison=False
# Envoi des caractères sur la liaison série
def envoyer(datacmd) :
    try:
        ser.write((datacmd).encode('utf-8'))
    except:
        print("bp d'écriture")
def servomot():
    b=str(curseur_base.get())
    data = "B"+b
    envoyer(data)
# L'IHM
fen = Tk()
fen.geometry("500x200")
fen.title("Commande du servomoteur")
label = Label(fen, text="Commande du servomoteur",fg="blue",font=("Arial", 22, "bold", "italic"))
label.place(x=50, y=10)
curseur_base = Scale(fen, orient='horizontal', from_=0, to=180, length=200)
curseur_base.place(x=145, y=50)
curseur_base.set(90)
bouton = Button(fen, text="envoyer", command=servomot)
bouton.place(x=220, y=100)
fen.mainloop()
if liaison : ser.close()


Source : https://lesmanuelslibres.region-academique-idf.fr
Télécharger le manuel : https://forge.apps.education.fr/drane-ile-de-france/les-manuels-libres/snt-seconde ou directement le fichier ZIP
Sous réserve des droits de propriété intellectuelle de tiers, les contenus de ce site sont proposés dans le cadre du droit Français sous licence CC BY-NC-SA 4.0